Copyright: Copyright ©1999 by Zugg Software


Contents

zChat is a secure, peer-to-peer chat program for the Internet.  zChat integrates with the PGP public/private key encryption software for unbreakable security.  zChat also interfaces with the zMUD client as a plugin, allowing zMUD users to access chat functions and to script the zChat functions.  zChat is also compatible with the chat system used by the MUD Master MUD client.

Since zChat is a peer-to-peer chat system, you must know the IP address or Host name of the computer you want to chat with.  If you are playing a MUD with someone you want to chat with, it is easy to exchange your IP address with them.  Or you can send your IP address via email to the person you want to chat with (you can even send this email from within zChat).  Once you exchange IP addresses, then you can chat with the other person.  zChat remembers the IP address for future sessions, so if the other person has a permanent Internet address, you can chat again without entering that information.

A server subscription is planned for the future which would allow you and your friends to register on the zuggsoft server and let it keep track of your IP addresses so that you wouldn't have to exchange them each time.  This will be convienent for people using an Internet Provider where their IP address is different each time they dial up to the Internet.  For information on the status of the server subscription product, consult the www.zuggsoft.com web site.

zChat is FREE software.  The PGP software is also FREE, but you must follow the PGP license agreement and download and install it yourself.  If you use zChat for commercial use, you will need to get a commercial version of PGP.  zMUD is SHAREWARE and requires a one-time registration fee to continue to use it.  In order to use zChat as a zMUD plugin, you must have zMUD version 5.42 or greater, and your copy of zMUD MUST BE REGISTERED.  For more information on zMUD, go to http://www.zuggsoft.com/.  For more information on PGP, go to http://www.zuggsoft.com/zchat/pgp.htm.

For more help, select one of the following topics:

Getting started with zChat

Chat Security

Advanced Chatting

Using zChat with zMUD

zMUD Chat Command Reference

zMUD Chat Function Reference

Using zChat with MUD Master


Getting started with zChat

Running zChat

When you install zChat, an item is added to your Start/Programs menu for zMUD, which contains a command to start zChat.  zChat is also loaded automatically when you run zMUD (when it loads zChat as a plugin if you have a Registered version of zMUD 5.42 or greater).  You can also run zChat whenever you start your computer by dragging the ZCHAT.EXE program from the Windows Explorer into the Startup folder on your Start menu and creating a Shortcut for it there.

When you first run zChat, it installs itself into your System Tray in the lower right corner of your desktop next to the clock.  This keeps it handy, but out of the way until you need it.  To interact with zChat, double-click the Z icon in your system tray to open the zChat window.

All of zChat is controlled from one main window, so you won't end up with lots of windows cluttering your screen.  There are many options you can set to customize how zChat works, so if you don't like the default operation, read through this help file to learn how to customize it the way you want it.

The zChat Window

The zChat window is divided into several sections:

Menu bar: the menu bar along the top is used to select commands.  Many commands can also be selected by right-clicking on an item to get a context-specific menu.

Tool bar: located just below the menu bar contains buttons for common operations.  You can right-click on the toolbar to select whether it shows icons, text, or both.

Person panel: located on the left side of the window.  This panel, or tray, holds buttons for each person you want to chat with.  To add a person to this list, right-click on the empty space in the panel.  To select a person to chat to, click their button in this panel.  All buttons docked in this panel are saved and restored and you exit and enter zChat

Group panel: located between the person panel and the chat panel and is hidden by default.  To view it, click the button in the upper-right part of the caption for the person panel.  The group panel, or tray, holds buttons for each group you want to chat with.  To create a new group, right-click on the empty space in this panel.  To add a person to a group, drag the button for the person from the person panel and drop it onto the group button.

Chat panel: located on the right side of the window.  This panel contains a scrollable message area, and a status line for system messages and command line for typing chat commands along the bottom.  You can hide the chat panel using the command in the Chat menu.

Chat Names

When you first run zChat, you will be prompted to enter your Chat Name.  This is the name that everyone will see in their person panel when they are chatting with you.  You can use any name that you want, and names can contain any letters, numbers, or symbols that you wish.  Once you enter your chat name you can always change it later in the Edit/Preferences window.

Creating a Chat Connection

When you first start zChat, you won't have any buttons in your person or group panels.  To add a button to create a chat connection with another person, right-click in the empty area of the person panel, or select Add from the Person menu.  A prompt will appear asking for the IP address (or host name) of the person you want to chat with.  Enter that information and click OK and zChat will attempt to connect.

There are several ways to determine the IP address of the person you want to chat with.  If you are playing a MUD with the person, simply use a MUD commands to tell the other person what your address is and ask for theirs.  In zMUD you can display your current IP address using the command:

#SHOW %ip

If you are running behind a firewall, you will only be able to call out to other people and won't be able to accept incoming connections unless you set up your firewall to accept chat connections on port 4050.  Consult your network manager for setting up your firewall.  If you have a firewall and want to call other people, select the Network page of the Edit/Preferences window and enter the name and port of your firewall.  Your firewall must support the SOCKS4 protocol for zChat to work with it.

If your chat call is answered by the other person, their name on their button will turn blue and a status icon will be displayed.  If the connection is not successful, the icon will be red.  If the connection was not successful, check to make sure you used the correct IP address and that the other person is running a compatible chat program.  zChat can communicate with other zChat users, zMUD users (using zChat as a plugin), and MUD Master users (using the more limited MUD Master chat protocol).

Icons, Icons

The button that appears in the person panel contains the Chat Name of the person you connected to, a status icon on the left, and a custom icon between the name and the status icon.

The status icon shows the status of the user at the other end of the chat connection.  It has several possible pictures:

A red circle: means that the connection is not active and you cannot chat with this person.  Use the Connect command in the Person menu (or in the right-click menu) to try and connect to the person

A green circle: means the connection is active and other status information has not yet been received.  MUD Master chat does not support status information, so MUD Master users will always just have a green circle.

An open eye: means the other person has zChat or zMUD as their active application and are currently using it

A closed eye: means that the other person is at their computer but zChat or zMUD is running in the background.  When you chat to them, they will hear a beep (if they have sounds turned on) and their zChat icon in their system tray will start blinking.

AFK: means that the other person has not typed or used their mouse within a certain time and are probably not at their computer.

The custom icon to the right of the status icon starts out as either a Z or MM depending upon whether the other user is using zChat/zMUD or MUD Master.  MUD Master does not support the advanced security or other features of zChat and cannot set a custom icon.  zMUD users can change the icon from a Z to any icon they want by going into their Edit/Preferences window, going to the Appearence page, and selecting a 16x16 BMP graphics file for their icon.  This icon is sent to everyone they are chatting with and displayed instead of the Z.  This is just another way to personalize your zChat.  zMUD users can even change their icon under script control, which allows a lot of possibilities.

Chatting

To chat with a person once you have a connection, click their button in the person panel.  Then click in the command line at the bottom of the chat window and type something.  Whatever you type will be sent to the person and displayed on their screen.  Anything they type will be shown in your chat panel.

You'll notice that text such as "You chat to Zugg, 'hello'" is sent when you just type "hello" on the command line.  The "You chat to Zugg" is called the preamble and is sent before the message so that the other person will know that you are talking with them.  Also, there will always be a space at the beginning of each chat message received so that zMUD users with triggers cannot be tricked into thinking the chat line came from the MUD itself.  In the Preferences, you can turn on Brief mode which reduces the size of the preamble message.

You can customize the font used in the chat window in the Edit/Preferences Appearence page.  You can also select a unique color for each person you are chatting with by right-clicking on their icon in the Person panel and selecting Properties (or select Prop from the toolbar, or Properties from the Person menu).

The messages that you send to the other person can be as long as you want.  As you type, the command line will grow to accomodate the size of the message you are typing.  Both the chat panel and the command line automatically word-wrap.  You can press Ctrl-Enter to insert a newline into the text you are typing.  Once you press Enter, the text is sent to the person and the command line is cleared.  You can recall past messages by pressing the Up-Arrow and Down-Arrow keys to cycle through your message history.  The size of the message history is set in your Preferences.

If you press the Down-Arrow after you have typed a message, but before you press Enter, it is stored in the command history without sending it.  This is useful if you are in the middle of a big message and need to stop and send a quick message to someone else.  Just press Down-arrow to store the long message, enter the short message to the other person, then press Up-Arrow twice to recall the previous long message and continue typing.  While you are typing, the Up and Down arrows move the cursor within the command line itself.

Making zChat Go Away

When you are done chatting, select Close from the File menu or just press the Escape key and zChat will go back down to your system tray.  To remove zChat from your system tray, select Exit from the File menu instead of Close.  Escape also acts as a good "boss" key to put zChat away quickly.

When you get a new message from someone while zChat is minimized, it will make a noise and start flashing the Z icon in the system tray.  Double-click the Z icon to restore the zChat window to respond to the message.  In your Preferences you can also set up zChat to automatically restore whenever a new message is received.  When this is done, the person who sent the message is automatically selected so that you can immediately reply to them.  You can also set an option which minimizes zChat as soon as you press Enter to send a message.  These modes allow you to easily work with zChat without interrrupting your other work...you can have zChat pop up and then go away when you are done automatically.

Emoting

"Emote" is a MUD term for sending an "emotion" to another person.  zChat has a powerful emote mode that you can customize in the Edit/Preferences.  To see the difference between a "chat" and an "emote", select a person to chat with and enter "kicks you" on the command line.  When you are in Chat mode, the other person will see "Zugg chats to you, 'kicks you'" on their screen.  When you are in Emote mode, they will see "Zugg kicks you" on their screen.  To select Emote mode, click the Emote button on the toolbar.  Or, you can just put the Emote Character (defaults to /) before your text: /kicks you.

You can define your own emote shortcuts in the Preferences window.  Each emote has a name, and two different strings depending upon whether the emote is directed at someone or not.  When an emote is undirected, you just enter the name of the emote on the command line along with the emote character.  For example, if you have an emote called "laugh" with undirected text "rolls on the floor laughing", then when you type /laugh, the other person will see the text "Zugg rolls on the floor laughing".  You could also have directed text "laughs at %1" where %1 is used to represent the target of the emote.  Then, on the command line you type "/laugh Darker" and the other person sees "Zugg laughs at Darker" or "Zugg laughs at you" depending upon whether their name is Darker or not.  This directed emote makes more sense when you are chatting with a group so that the group can see who you are emoting to.

Groups

You can chat with a group of people by just holding the Shift key when you click their buttons in the Person panel; or you can define a group.  To define a group, select Add from the Group menu or right click in the empty space in the group panel (make the group panel visible using the button in the upper right corner of the person panel).  To add a person to the group, drag their icon from the person panel and drop it onto the group icon.  Or select Add to group in the toolbar.  You can remove people from a group using the Remove from group icon in the tool bar, or by right-clicking the group icon and selecting the person you want to remove.

To chat with a group, click the Group button in the group panel that you want to chat with, and you'll see the corresponding person buttons in the person panel get pressed.  You can hold the shift key and click other groups to chat with or other people to chat with.  Clicking the All button will select all people to chat with.  The text that people see when you chat with a person, group, or all will change to reflect the situation.  For example, with the All button set, when you enter "hello", other people will see the text "Zugg chats to everybody, 'hello'".

History and Logging

Whenever someone chats with you, their message is shown in the chat panel.  If many people are chatting to you, it might be hard to see a specific message from a specific person.  zChat keeps a history of messages sent from each person.  Right-click the person you are chatting with and select History to see a history of messages sent from the person without them being mixed with your messages or the messages of other people.

The chat panel also keeps a large scrollback history of messages.  You can use the PgUp and PgDn keys to scroll through the buffer.  While scrolling, the chat panel will split into an upper section that displays the scrollback history, while the lower session remains live and displays any new incoming chats.  You can use the ScrollLock key to toggle the split bar on and off, or click the split button in the lower right corner of the chat window.

There is also a history of system status messages that have been displayed in your status bar acessible from the Chat menu.

To log your chat session to a file, select the Open Log command from the File menu.  You can create a new file or append to an existing file.  The Log command will toggle the logging on and off and can also be toggled using the Ctrl-L key.


Chat Security

Strong security is one of the main features of zChat.  Very few communication programs on the Internet are as secure as zChat.  The security features fall into three major categories:

Encryption: protecting the contents of your message.

Digital signature: verifying the message came from the correct person.

Restricting connections: preventing unauthorized people from connecting to you

The Reason for Security

The Internet is a hostile place.  There are a lot of people on the Internet, and a small fraction of them like to cause trouble, whether it be sending computer viruses, hacking computer software, or trying to snoop your private messages or impersonate someone else.  These people see these things as a challenge.  If there is a way to break the security of a program, someone will try it.

Because of the way the Internet protocols are designed, it is possible to impersonate another computer connected to the Internet.  Also, since you never know which computer your messages will get sent through, anyone can monitor your email or chat traffic as it flows across the Internet.  While this isn't that common yet, there are several famous examples of people snooping someone elses email or sending an email as an imposter.

All Internet software is subject to these problems unless they implement security features.  Programs such as Web Browsers usually have a secure mode that encrypts traffic so that credit card numbers are secure.  Email programs have encryption features to encrypt and sign messages (see below for how this works).  Very few chat programs or MUD clients have any security features, except for zChat and zMUD.  Even chat programs based upon servers for security, such as ICQ, have been broken.

To make matters worse, there are limits on encryption and security software.  Web browsers that are exported to other countries use short encryption keys that can be broken by someone with enough time and computer power (which is getting easier and easier).  Fortunately, a strong security program exists on the Internet called PGP that has yet to be broken.

Security 101

To understand how the security features in zChat first, it is important to first learn a couple of basic security topics.  zChat uses Public/Private key algorithms for security.  The way these keys work is that a message encrypted with your Public key can only be decrypted with your Private (or Secret) key.  A message encrypted with your Private key can only be decrypted with your Public key.  As the names suggest, only you have access to your Private key, whereas anyone in the world has access to your Public key.  So, how does this help?

Suppose somebody else in the world encrypts a message with YOUR Public key (which anyone has access to).  Because of the algorithm described above, this message can ONLY be decrypted using your Private key, which only you have.  So, this message is private...only you can view its contents, nobody else can read it.

Suppose you encrypt a message with YOUR Private key (which only you have).  This message can be decrypted by anyone with your Public key, which everyone has access to.  So, anyone can read this message.  However, if they successfully decrypt the message with your Public key, that means the message could only have been created by you since you are the only one with your Private key.  This is called a "digital signature" since it verifies that you sent the message.

You can now combine these two concepts.  To send a private, signed message to someone else, first encrypt it with your Private key (to sign it), then encrypt it with the other person's Public key (to make it private).  The other person decrypts it with their Private key, and then with your Public key.  This message can only be read by the person you sent it to, and they can verify that it really came from you.

PGP

PGP (Pretty Good Privacy) is a free program that allows you to encrypt and sign messages using Public/Private keys.  It has been available on the Internet for several years and is available both in the U.S. and outside the U.S.  After various legal battles, PGP is now perfectly legal for anyone to use (although you should always read the license agreement to make sure you are in compliance with it).

In order to use many of the security features in zChat, you must have installed a copy of PGP on your computer.  For information on obtaining and installing PGP, go to the web page http://www.zuggsoft.com/zchat/pgp.htm.  All you have to do is install PGP according to their instructions.  Once PGP is properly installed, run zChat and select the PGP Setup wizard from the Edit menu.  NOTE: Make sure the PGPPATH environment variable is configured properly as instructed in the PGP installation.  zChat uses this environment variable to located PGP on your computer.

zChat has been tested with PGP version 2.6.  This particular version is available on most every computer system and has both a US and non-US version that are compatible with each other.  zChat may work with other versions, but it hasn't been tested.

When you run the PGP Setup wizard in zChat, it will first check to see that PGP is installed correctly.  Then, it will then check to see if you have generated your Public/Private key-pair yet.  If not, you will be given instructions on how to create your keys for the first time.  PGP keeps your public key (and any other public keys for other people) on your Public key ring, in a file called pubring.pgp (in your PGP directory).  PGP keeps your private key on your Secret key ring, in a file called secring.pgp.  You will also be prompted to enter a Passcode which is a password phrase that protects your secret key ring.  This way, if someone steals your secret key ring, they still can't access your private key unless that also know your Passcode.  For this reason, you should never write down your Passcode or store it on your computer.  And even though your secret key is password protected, you should still try to make sure that you keep the file safe so nobody can steal it.

Once your Public/Private keys have been created, you are prompted to select the key you want to use in zChat (in case you have more than one), and then you are prompted to select the people you want to exchange keys with.  You can also exchange keys with someone later by selecting the Exchange PGP Keys command from the Person menu or the right-click menu.  When you exchange keys, zChat first sends your Public key to the other person.  Once they receive it they send you their Public key and it is added to your PGP key ring automatically.  Also, the name of their key is put into the Security Properties for the person and the Use PGP flag is turned on.

Using the Security Features

To chat securely with someone, you must have the name of their public key entered into their security properties and you must have the Use PGP flag on for that person.  You can toggle this flag in the Security properties, or click the Lock icon on the right side of the status bar in the chat panel.

When you successfully send an encrypted and signed message to someone, an asterisk (*) is added to the beginning of the chat message.  If you get an encrypted message from someone else that is successfully decrypted, an asterisk (*) is added to the beginning of their chat message.

If you get a message that looks like garbage and starts with the "PGP Header" line, that means the other person successfully encrypted the message but you didn't decrypt it.  Make sure the Lock icon in the status bar is in the locked state and that you have the person's public key name entered into the Security properties for the person, and the name of your public key entered into the Edit/Preferences security page.  If you get a message about the signature not being verified, that means the message was decrypted, but the identity of the person sending it does not match the identity of the person who sent you the public key.

When in doubt about your security setup, just run the PGP Setup wizard again.  Its an easy way to exchange keys with more than one person and to make sure the settings are correct on your system.

Restricting Connections

In addition to securing the chat messages you send, it is often useful to restrict the people who are allowed to connect to you.  Otherwise there will always be some annoying person that likes to just connect and disconnect you to annoy you (it has happened).

Normally, anyone can connect to you.  You can turn off the Auto Accept option in the Preferences so that you are prompted each time a person tries to connect, but if someone is spamming you with connections, this can be even worse than auto accepting them.  So, you can also restrict it so that only people already in your person list can connect.

When someone connects to you, zChat searches the currently disconnected person buttons for a matching button.  The Chat Name of the person connecting must match the chat name on the button.  Also, if you have the Permenant IP Address option checked for the person, their IP address must match also.  Since there are ways for people to impersonate others and since many people do not have fixed IP addresses, zChat adds another layer of connection security.

If you don't have PGP, you can enter a Security Phrase for the person in their security properties.  This should be the same as the Security Phrase they have entered in their Edit/Preferences security page.  If you have a security phrase entered for a person button, incoming connections from that person are only allowed if the security phrases on both ends match.  This is like a secret password that you share with your friend.  This security phrase is encrypted when it is sent across the Internet in case someone is looking at your messages.

Even though the security phrase is encrypted, it is still possible for someone else to discover what it is.  For the strongest connection security, turn on the PGP option for the security phrase.  When this is on, a message is encrypted and signed and sent as part of the connection request.  Only if you are able to decrypt the message and their encryption key matches the public key they have sent you will the connection succeed.  So, make sure you only accept public keys from someone when you know they are really who they say they are.  Once you have someone's public key, you can verify that you are talking to that same person.

Other Security Comments

Security like this isn't fast.  The encryption and decryption routines take time, and zChat must load PGP from the DOS command line.  So, whenever zChat is busy talking with PGP, the mouse cursor will change into a lock.  If you turn off the Use PGP flag (or click the Lock icon in the status bar so that it is unlocked), messages will get sent more quickly but will not be secure.

Be careful when chatting with a person using another chat client such as MUD Master (indicated with the MM icon).  These users do not have any security features and you can't be sure you are talking with the person you think you are.  Most of the time this is not an issue, but when secure chatting is important, make them use zChat.

Your Passcode is used to unlock your Private key on your secret keyring.  You can only change this passcode using PGP directly and zChat will never display this passcode, nor store it anywhere on your disk.  Normally, zChat only prompts for your passcode the first time it is needed.  It is then kept in memory for future use while zChat is running.  In your Edit/Preferences security page you can manually expire your passcode or tell zChat to expire it whenever your computer is inactive (AFK).  When your passcode expires you will be prompted for it again the next time it is needed.  Setting it to expire when you are AFK is a good way to prevent someone from using your zChat program while you are away from the computer.


Advanced Chatting

In addition to simple chatting and emoting, zChat can perform many other functions that are described here.

Sending Files

zChat can send files to someone while you chat with them at the same time.  Simply click the Send File button in the toolbar and select the file you want to send.  zChat will not overwrite files that already exist, so if you get an error message, tell the other person to delete or rename the existing file on their system.  Also, by default, zChat is set up to NOT allow incoming files.  To allow someone to send you a file, select the Allow Files option from the person menu or the right-click menu, or click the disk icon in the status bar so that it does not have a red X drawn through it.  Once the other person allows you to send a file you will get a window that displays the progress of the file transfer.  zChat does not use a super fast download protocol like FTP since it allows you to chat while you are sending the file, so if speed is important, use an FTP program instead of zChat.  However, sending files via zChat is certainly easy!

Note that if you have PGP encryption enabled, your file data is encrypted when it is being sent, which is even slower, but very secure if that is important.

When the file transfer is done, you will hear a sound and a message will be displayed on your status bar.

Sending Email

If the person you want to chat with has disconnected, you can still send them a message via email.  Your email address is entered into your Edit/Preferences window.  Whenever you connection with another zChat user, your email addresses are exchanged.  If you have the email address of the person, then when you try to chat with them when they are disconnected, an email form will be displayed.  Just click Send to send the email if all the information is correct.  You can turn off the auto-email option in your Preferences.

You can send an email any time by clicking the Email button in the toolbar.  The email address of the person last selected is automatically filled in.  But you can change the Send field to anything you want to send the email to someone.  This isn't a full-featured fancy email program, but it gets the job done.  zChat cannot read your email...you must use your regular email program for that.

Chat Connections

Sometimes it is useful to look at another person's chat list or to connect to everyone else in their list.  For example, if someone is chatting with a group that you also want to chat with, you need to connect to each person in the group.  To look at someone's public chat list, use the Peek Connections command in the Commands section of the Person menu or right-click menu.  To connect to all of another person's public chat list, use the Get Connections command in the Commands section of the Person menu.

By default, all of your connections are Private and cannot be viewed or connected to by others.  To make a connection Public, toggle the Door icon in the status bar so that it is open, or toggle the Private command in the Person menu.

If you turn on the Do Not Disturb flag in your Chat menu, then incoming chat requests will automatically be denied from everyone so that you won't be disturbed.

Ignoring People

If you want to ignore someone in your person list so that you don't see their chatting, toggle the chat icon in the status bar or select the Ignore command from the Person menu.  Connections that are being ignored are shown by drawing a line through their name in the person panel.  The other person will not be able to detect that you are ignoring them (except for the fact that you never respond to their chats :)

Pinging

To see how fast your connection to another person is, use the Ping command in the Command section of the Person menu.  It displays the roundtrip packet time in milliseconds.

Snooping

Snooping allows you to see everything that the other person sees on their screen.  However, this only works with MUD clients such as zMUD and MUD Master.  You cannot snoop another person that is just using zChat by itself.  In order to snoop someone elses connection, they must turn on the Allow Snoop flag for you.  Once they do this, you select the Snoop command from the Commands section of the Person menu.  Output that is snooped from another connection has a > character added to the beginning so you can distinguish it from your own chat text.

If you have PGP Encryption enabled, the text send from the other user to you is encrypted.

Sending Commands

You can send commands to another user if they are using the zMUD client.  In order to send commands to someone, they must turn on the Allow Commands flag for you.  Once they do this, enter a command that starts with the default command character (#) and it will be sent to their zMUD session and executed.

Note, this is a very dangerous command!!  Only allow someone to send you commands if you trust them.  However, for those trusting people, sending commands is a very useful way to exchange scripts and zMUD commands.  Also, the combination of Snooping and Send Commands allows you to remotely control another person's MUD session.

If you have PGP Encryption enabled, your commands send to the other user are signed and encrypted.

In fact, using zMUD on another computer and turning on Snoop and Send Commands and then turning on PGP encryptions gives you a secure remote control session.  This could be used for securely managing another computer.


Using zChat with zMUD

Since zChat is also a zMUD plugin, it interoperates seamlessly with that MUD client.  It adds dozens of commands to the zMUD scripting language and echoes your chats to the MUD output window.  All of the zChat features, including the security functions can be used with zMUD.  You must have a REGISTERED version of zMUD version 5.42 or greater in order to use zChat.

When you start zMUD, it loads all plugins, including zChat.  If zChat isn't running yet, it is started.  Note that when zMUD exits, zChat is left running in your system tray so you can continue to chat with people outside the MUD.

To prevent zChat from loading when you start zMUD, exit zChat while zMUD is running, or select Unload from the zChat plugin menu in zMUD.  If zChat does not load when you start zMUD, load it using the Load command in the zChat plugin menu in zMUD.

By default, everything received by zChat is echoed to your current MUD session window in zMUD.  You can turn this off in the Edit/Preferences window in zChat.  You can seperately control whether chat messages, system messages, or both are sent to your zMUD window.

Chat Status

Use the #CHAT command without any arguments to display your person and group lists to the zMUD window.  Each chat session shows the name of the person along with the number assigned to the chat session, along with their IP address and flag settings.  Most zMUD chat commands require the Name or the Number of the chat session that you want to operate with.

Making a chat connection

To make a cht connection in zMUD, use the #CALL command along with the name or number of the session you want to connect to.  If the chat session doesn't exist yet, specify the IP address and the port number to connect to.  The port defaults to port 4050.

Basic Chatting

To chat with one of the people in your list, use the #CHAT command followed by the name or number of the person to chat to and then the text you want to send:

#CHAT Zugg Hi there

The #CHAT command can be abbreviated with just #C.  To chat again with the same person you last chatted with, you can use the #CC command and just put the message without specifying the name of the person.  If someone else chats with you, you can automatically reply to them using the #REPLY command.

To chat with one of your groups, use the #CHATGROUP of #CG command.  In addition to giving a group name you can use a zMUD string list to specify the names of the people you want to chat with:

#CG Zugg|Clan Hello

will chat with the person "Zugg" along with the group "Clan".  To chat with everyone in your list, use the #CHATALL command.

To emote instead of chat, use the #EMOTE (or #E), #EE, #EMOTEGROUP (#EG), or #EMOTEALL commands.  They work just like the corresponding chat commands but send emote messages instead.

Note that zMUD cannot yet access your special Emote shortcuts in your zChat Preferences.

Disconnection

To disconnect a chat session, use the #UNCHAT to disconnect, or the #CHATREMOVE to remove the icon from the list completely.

Customizing your Chat Session

The #CHATCOLOR can be used to change the color of chat messages received from a person.  The #CHATNAME command can be used to change your chat name and the #CHATICON command can be used to change the icon that people see next to your name.  By scripting the icon command you can use your icon to reflect all kinds of MUD status info (like whether you are in a battle, etc).


zMUD Chat Command Reference

#C	same as the #CHAT command

#CALL	connect to a person or chat session

#CC	chat with the same person as the last chat command

#CG	same as the #CHATGROUP command

#CHAT	chat with a single person, or display your chat list

#CHATALL	chat with everyone in your chat list

#CHATCOLOR	set the text color used by a chat session

#CHATCONNECT	get all of the public connections from someone else and connect to them all

#CHATCOMMANDS	toggle whether commands can be received from a chat session

#CHATFILES	toggle whether files are accepted from a chat session

#CHATGROUP	chat with a group of people

#CHATICON	change the icon seen by others next to your chat name

#CHATIGNORE	toggle whether a chat session is being ignored

#CHATLIST	look at the list of public connections for another person

#CHATNAME	change your chat name

#CHATPING	ping a chat connection to see the roundtrip time taken

#CHATPGP	toggle the PGP Encryption flag for a chat session

#CHATREMOVE	remove a chat session from your list and person panel

#CHATSNOOP	toggle whether a person is allowed to snoop your mud connection

#DND	toggle the Do Not Disturb flag to prevent people from connecting to you

#E	same as the #EMOTE command

#EE	emote to the same person as the last emote command

#EG	same as the #EMOTEGROUP command

#EMOTE	send an emote message to a single person

#EMOTEALL send an emote message to everyone in your list

#EMOTEGROUP	send an emote message to a group of people

#FILECANCEL	cancel a file transfer

#G+	add a person to a chat group

#G-	remove a person from a chat group

#PRIVATE	toggle whether a chat session is public or private

#REPLY	chat with the last person that sent you a message

#SENDCOMMAND	send a command to another zMUD user

#SENDFILE	send a file to another person

#SERVER	toggle whether you are serving a chat connection for others

#SNOOP	toggle whether you are snooping another persons connection

#UNCHAT	disconnect a chat session but don't remove it from your chat list


zMUD Chat Function Reference

%chatflag	sets and retrieves various flags for a chat session

%chatname	returns the name of a chat session

%numchats	returns the number of chat sessions


Using zChat with MUD Master

zChat is compatible with the Chat protocol used by the MUD Master MUD client.  However, the MUD Master chat protocol is more of a subset of zChat since it does not contain the security features and many of the graphical items such as icons, afk status, and colors.

When you first connect to a MUD Master user with zChat, zChat will try the zChat protocol, which will fail.  It will then automatically try the Mud Master protocol which should suceed.  The Mud Master user will see both connection attempts, the first one failing and the second one succeeding.  Once zChat has connected, it will flag the connection as a Mud master connection and will not try using the zChat protocol the next time it connects.  You can toggle whether a session is using Mud Master in the properties for that person.

zMUD users cannot send commands to MUD Master users.  However, the SENDALIAS, SENDVARIABLE, SENDACTION, SENDMACRO commands in MUD Master will work and create the appropriate alias, variable, trigger, or macro on the zMUD user's system.

You cannot use the #CHATCOLOR, #CHATICON, #CHATPGP commands with MUD Master users.  However, if they are running the latest version of MUD Master, you can use the #SNOOP commands.  The zMUD commands and the MUD Master chat commands are very similar but there are a few differences.  Consult the MUD Master manual for details.

Note that when you are connected to someone using MUD Master, you cannot verify their identity and cannot encrypt your messages.  Keep this in mind when you are chatting.


CALL

Syntax: #CALL session/ip-addr [port]

Initiates a chat connection with another person.  To reconnect an existing chat session, specify the Name or number of the session.  Otherwise, to make a new connection, the first argument is the IP address or host name of the other person.  The second argument is the optional port number which defaults to 4050.

Example

#CALL 1

reconnects chat session number 1

#CALL 192.168.0.2

attempts to connect to the person with the IP address 192.168.0.2 and create a new chat session


CC

Syntax: #CC message

Sends a chat message to the last person that you chatted to.

Example

#CHAT Zugg Hi There
#CC This is another message for zugg

Sends two chat messages to the Zugg session.  For the second message we use the #CC command to avoid repeating the Zugg name


CHAT

Syntax: #CHAT session message

Sends a chat message to the specified session.  Session is the Name or Number of the chat session you want to chat with.

Example

#CHAT Zugg Hi there

Sends a chat message to Zugg

#CHAT 1 Hi

Sends a message to your first chat session


CHATALL

Syntax: #CHATALL session message

Sends a message to all of your chat sessions.

Example

#CHATALL I am spamming everyone!

Sends a message to everyone.


CHATCOLOR

Syntax: #CHATCOLOR session color

Changes the text color of the given session.  Session is the Name or Number of the chat session.  Color is the name of a color or a numeric color attribute as defined for the #COLOR zMUD command.

Example

#CHATCOLOR Zugg red

changes the chat color of messages from Zugg to red

#CHATCOLOR 1 blink,blue

changes the color of messages from chat session one to blinking blue.


CHATCONNECT

Syntax: #CHATCONNECT session

Connects you to all of the specified session's public chat sessions.  Session is the Name or Number of the session you want to query.  You can list the public connections that you will be connecting to using the #CHATLIST command.

Example

#CHATCON Zugg

Connect to all of Zugg's public connections


CHATCOMMANDS

Syntax: #CHATCOM session [flag]

Toggles whether the specified chat session can send commands to you.  If flag is present, non-zero turns the option on, zero turns the option off.

Example

#CHATCOM Zugg

Toggle the send command flag

#CHATCOM Zugg 1

Allow Zugg to send us commands


CHATFILES

Syntax: #CHATFILE session [flag]

Toggles whether the specified chat session can send files to you.  If flag is present, non-zero turns the option on, zero turns the option off.

Example

#CHATFILE Zugg

Toggle the send files flag

#CHATFILE Zugg 1

Allow Zugg to send us files


CHATGROUP

Syntax: #CHATGROUP Group Message

Sends a message to a group of people.  Group is either the name of a chat group, or a string list of group of people.

Example

#CHATG Clan I'm here

Sends the message to the chat group called "Clan"

#CHATG Zugg|Darker Hello

Sends a message to the two people, Zugg and Darker

#CHATG Zugg|Clan Hi

Sends a message to the person Zugg and the group Clan


CHATICON

Syntax: #CHATICON filename

Sets the name of the BMP file that you want to use as your custom chat icon.  The file should be a 16x16 pixel BMP file and the pixel in the upper-left corner is used to set the transparency color of the icon.

Example

#CHATICON happy.bmp

Sets your custom icon to the picture in the happy.bmp file


CHATIGNORE

Syntax: #CHATIGNORE session [flag]

Toggles whether the specified chat session is being ignored.  If flag is present, non-zero turns the option on, zero turns the option off.

Example

#CHATIG Zugg

Toggle the ignored flag for the Zugg connection

#CHATIG Zugg 1

Ignore whatever Zugg says (you'd never really do this, right? :)


CHATLIST

Syntax: #CHATLIST session

List all of the public chat sessions that the specified session is connected to.  Session is the name of number of the session to query

Example

#CHATLIST Zugg
     Name                 Address         Port
     ==================== =============== =====
     Darker               192.168.0.4     4050

shows that Zugg is connected to Darker and gives Darker's IP address and port.  To connect to Zugg's sessions, use the #CHATCONNECT command.


CHATNAME

Syntax: #CHATNAME name

Sets your current Chat Name to the given name

Example

#CHATNAME Zugg

Sets your chat name to Zugg


CHATPING

Syntax: #CHATPING session

Displays the roundtrip packet time between your computer and the specified chat session in milliseconds.  Session is the name or number of the chat session to ping.

Example

#PING Zugg
<CHAT> Response time from Zugg: 120 ms.

Shows how fast the connect between you and Zugg is.


CHATPGP

Syntax: #CHATPGP session [flag]

Toggles the Use PGP flag for the given session.  If flag is present, non-zero turns the option on, zero turns the option off.

Example

#CHATPGP Zugg

Toggle the Use PGP flag

#CHATPGP Zugg 1

Start encrypting the session with Zugg


CHATREMOVE

Syntax: #CHATREMOVE session

Disconnects a session and removes it from your list.  Session is the name or number of the session to remove.

Example

#CHATREMOVE Zugg

Remove the Zugg session from the chat list


CHATSNOOP

Syntax: #CHATSNOOP session [flag]

Toggles whether the specified chat session can snoop your connection.  If flag is present, non-zero turns the option on, zero turns the option off.

Example

#CHATSNOOP Zugg

Toggle the allow snoop flag for Zugg

#CHATSNOOP Zugg 1

Allow Zugg to snoop our MUD connection


DND

Syntax: #DND [flag]

Toggle the Do Not Disturb flag.  When on, incoming chat requests are automatically denied.  If flag is present, then if non-zero, set the flag, if zero, clear the flag.

Example

#DND

Toggle the Do Not Disturb flag

#DND 1

turn on the DND flag


EMOTE

Syntax: #EMOTE session message

Sends an emote message to the specified chat session.  Session is the name or number of the session you want to emote to.

Example

#EMOTE Zugg kicks you

Zugg will see "Chatname kicks you" where Chatname is your Chat Name

#E Zugg laughs

Zugg will see "Chatname laughs"


EE

Syntax: #CALL session


EMOTEALL

Syntax: #EMOTEALL message

Send an emote to all chat sessions

Example

#EMOTEALL laughs

Sends "Chatname laughs" to all users where Chatname is your Chat Name.


EMOTEGROUP

Syntax: #EMOTEGROUP group message

Sends an emote to a chat group.  Group can be the name of a group, or a string list of names and groups.

Example

#EMOTEG Clan bows

Sends "Chatname bows" to everyone in the Clan group

#EG Zugg|Clan grins at Darker

Sends "Chatname grins at Darker" to everyone in the Clan group and to Zugg.


FILECANCEL

Syntax: #FILECANCEL session

Cancels the file being sent or received by the given chat session.  Session is the Name or Number of the chat session.

Example

#FILECANCEL Zugg

Cancels the file being sent or received by Zugg


G_
G+

Syntax: #G+ group person

Adds the person to the given chat group.

Example

#G+ Zugg Clan

Adds Zugg to the Clan chat group


G-

Syntax: #G- group person

Removes the person from the given chat group

Example

#G- Zugg Clan

Removes Zugg from the Clan chat group


PRIVATE

Syntax: #PRIVATE session [flag]

Toggles whether the specified chat session is public or private.  If flag is present, non-zero turns the option on, zero turns the option off.

Example

#PRIVATE Zugg

Toggles whether Zugg is a public or private connection

#PRIVATE Zugg 1

Sets Zugg to a private connection


REPLY

Syntax: #REPLY message

Sends the message to the last person that chatted with you.

Example

#REPLY Thanks

Sends "Thanks" to the last person that chatted with you


SENDCOMMAND

Syntax: #SENDCOMMAND session command

Sends a command to a chat session.  The other person must have enabled sending commands for this to work.  This is very dangerous as it gives the person full control over your mud session.  Make sure you trust the other person.  Session is the Name or Number of the session to send a command to.

Example

#SENDCOMMAND Zugg {#ALIAS test {hello world}}

Sends a command to Zugg that creates an alias in his zMUD session.


SENDFILE

Syntax: #SENDFILE session local-filename [remote-filename]

Sends a file to a chat session.  The person must have enabled files from you for this to work.  local-filename is the full pathname and filename of the file you want to send.  By default, the same filename will be created within the other person's zMUD directory.  zChat cannot overwrite existing files, so you can also specify the optional file name to be created on the other system in case your file name already exists.

Example

#SENDFILE Zugg settings.mud Mysettings.mud

Sends the file 'settings.mud' to Zugg, but names it 'Mysettings.mud' on his system


SERVER

Syntax: #SERVER session [flag]

Toggles whether the specified chat session is served by you.  If flag is present, non-zero turns the option on, zero turns the option off.  When you are the server for a session, any chatall commands that you received are forwarded to your served settings.  This allows third-party chatting when two people cannot directly connect.

Example

#SERVER Zugg

Toggle the serving flag for Zugg

#SERVER Zugg 1

Serve the Zugg connection for others.


SNOOP

Syntax: #SNOOP session [flag]

Toggles whether you are snooping the specified session.  If flag is present, non-zero turns the option on, zero turns the option off.  For this to work, the other person must have enabled snooping on their end.  You can only snoop a MUD connection, not a zChat session.

Example

#SNOOP Zugg

Toggle snooping of Zugg's connection

#SNOOP Zugg 1

Turn on snooping of Zugg's chat session


UNCHAT

Syntax: #UNCHAT session

Disconnects the specified chat session but does not remove it from your chat list.

Example

#UNCHAT Zugg

Disconnects your chat session with Zugg


chatflag

Syntax: %chatflag(session[,flag])

Sets or queries flags for the specified session.  Session is the Name or Number of a chat session.  The flags are returned as various numbers added together depending upon the flags set for the session:

1 private session

2 session ignored

4 we are serving this session

8 commands are allowed from this session

16 files are allowed from this session

32 snooping is allowed from this session

If you specify the second argument, it allows you to set the given flags for the session.


chatname

Syntax: %chatname(session)

Returns the chat name of the specified session.  Session is the name or number of the session to query.


numchats

Syntax: %numchats()

Retuns the number of chat sessions in your chat list.